package QQCilent.Service;

import com.wyedu.qqcommon.Message;
import com.wyedu.qqcommon.MessageType;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端和服务器连接的类
 */
public class ClientConnectServerThread extends Thread implements MessageType{
   private Socket socket = null;
   private Scanner scanner = new Scanner(System.in);

    public ClientConnectServerThread(Socket socket) {
        this.socket = socket;
    }
    public ClientConnectServerThread(){

    }

    @Override
    public void run() {
        //因为Thread需要在后台不断地和服务器进行通信,因此我们采用while循环
        try {
            System.out.println("客户端线程,等待从服务器发送的消息....");
            while (true){

                ObjectInputStream  ois = new ObjectInputStream(socket.getInputStream());

                    //一直读取从服务端回送的消息
                    //如果服务器没有返回数据就线程会在这里一直阻塞
                    //接受服务器传回来的对象
                Message message = (Message) ois.readObject();

                switch (message.getMesType()) {
                    case MessageType.MESSAGE_RET_ONLINE_FRIEND:
                        String[] array = message.getContent().split(" ");//通过空格分割

                        System.out.println("=========显示在线用户列表==========");
                        for (String value : array) {
                            System.out.println("用户 " + value);
                        }
                        break;
                    case MessageType.MESSAGE_COMM_MES:
                      //  System.out.println("\"C:\\Users\\86186\\Music\\VipSongsDownload\\张国荣 - 倩女幽魂.mflac\"");
                        System.out.printf("(%s)对我说: %s\n", message.getSender(), message.getContent());


                        break;
                    case MessageType.MESSAGE_COMM_FILE:
                        //接收文件
                        System.out.printf("%s发送文件是否接收文件  1.接收  2.拒绝", message.getSender());
                        System.out.print("-> ");
                        int n = scanner.nextInt();
                        scanner.nextLine();

                        //D:\\java 2022\\java_2022\\2022初学\\xiaoyubuhuiqiche\\7_7网络基础\\src\\music\\毛华锋 - 奇迹再现.mgg
                        if (n == 1) {
                            String requestId = message.getSender();//谁发送给我的
                            // System.out.println("请输入要保存到的文件路径-> ");
                            String name = message.getContent();//这里传输文件名字
                            File file = new File("src\\qqMusic\\" + name);
                            OutputStream os = new FileOutputStream(file);
                            //获取文件内容
                            byte[] array1 = message.getFileMessage();
                            //将文件内容写入指定路径
                            os.write(array1);
                            os.flush();
                            //添加成功
                            //D:\\java 2022\\java_2022\\2022初学\\xiaoyubuhuiqiche\\7_7网络基础\\src\\music\\女子十二乐坊 - 奇迹.mgg
                            //C:\\Users\\86186\\Music\\联想安卓音乐\\陈奕迅 - 浮夸.flac
                            //System.out.println("\"C:\\Users\\86186\\Pictures\\java常用方法\\数组常用方法.png\"");
                            System.out.printf("接收(%s)传来的文件,添加成功", requestId);
                            os.close();

                        }
                        //唤醒它
                        break;
                    case MessageType.MESSAGE_CLIENT_EXIT:
                        System.out.println("服务器断开连接");
                        socket.close();
                        System.exit(0);
                        break;

                    default:
                        System.out.println("其余功能还没有实现");
                        break;
                }

                    //获取服务器返回的对象
                }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    //外部获取socket的方法
    public Socket getSocket() {
        return socket;
    }
}
